class Documenti::LettereController < DefaultController
  require_role self.parent_name.underscore
  record_select
  active_scaffold :lettera do |config|
    config.label = Application.controller_label(self)
    list.sorting = [{:data => 'DESC'}, {:numero => 'DESC'}]
    config.actions.add :field_search, :config_list, :export
    destinatario = [:partner, :contatto]
    contenuto = [:corpo_documento, :chiusura_documento]
    columns = [:numero, :data] + destinatario + [:tipo_documento, :oggetto] + contenuto + [:user, :allegati]
    columns_list = [:numero, :data, :partner, :tipo_documento, :oggetto]
    
    ## visualizzazione colonne
    config.columns = config.list.columns = config.show.columns = config.update.columns = config.create.columns = config.field_search.columns = columns
    config.config_list.default_columns = columns_list
    
    ## configurazione colonne
    config.columns[:partner].update_column = :contatto
    [:contatto, :tipo_documento, :user].each { |i| config.columns[i].form_ui = :select }
    config.columns[:tipo_documento].search_ui = :multi_select
    config.columns[:data].form_ui = :calendar_date_select
    config.columns[:partner].form_ui = :record_select
    [:corpo_documento, :chiusura_documento].each { |i| config.columns[i].options = NOTE_TEXTAREA }
    [:data, :tipo_documento, :oggetto].each { |i| config.columns[i].inplace_edit = :ajax }
    config.columns[:oggetto].options[:size] = 80
    config.columns[:partner].sort_by :sql => 'partners.ragione_sociale'
    config.columns[:oggetto].search_ui = :text
    config.columns[:allegati].search_ui = :text
    config.columns[:allegati].search_sql = 'allegati.name'
    config.columns[:user].label = "Autore documento"

    ## azioni
    config.columns[:partner].set_link('show', :controller => 'anagrafiche/partners')
    config.action_links.add "Genera ODT", :action => 'generate_odt', :type => :member, :inline => false
    config.action_links.add "Note", :action => 'nested', :parameters => {:associations => :note}, :type => :member
    config.action_links.add "Allegati", :action => 'nested', :parameters => {:associations => :allegati}, :type => :member
    #config.action_links.add "Versioni", :action => 'nested', :parameters => {:associations => :versions}, :type => :member
  end

  def generate_odt
    @lettera = Lettera.find(params[:id])
    azienda = Partner.find("#{APP_CONFIG[:id_azienda]}")
    template = "#{RAILS_ROOT}/reports/lettera.odt"
    report = ODFReport::Report.new(template) do |r|
      ##immagini
      carta_intestata = azienda.allegati.all(:conditions => { :name => 'carta_intestata'}).first.file_allegato.path
      firma_utente = @lettera.user.firma.path(:medium)
      if (carta_intestata != nil): r.add_image :carta_intestata, carta_intestata end
      if (firma_utente != nil): r.add_image :firma_utente, firma_utente end
      ##dati documento
      r.add_field "NUMERO", @lettera.numero
      r.add_field "ANNO", @lettera.data.strftime('%Y')
      r.add_field "LUOGO", azienda.localita 
      r.add_field "DATA", I18n.l(@lettera.data, :format => :long)
      ##destinatario
      r.add_field "RAGIONE_SOCIALE", @lettera.partner.ragione_sociale
      r.add_field "INDIRIZZO", "#{@lettera.partner.indirizzo}\n#{@lettera.partner.cap} - #{@lettera.partner.localita}"
      tel_fax_mail = ""
      if (@lettera.partner.telefono != nil): tel_fax_mail += "tel: #{@lettera.partner.telefono}" end
      if (@lettera.partner.fax != nil): tel_fax_mail += "\nfax: #{@lettera.partner.fax}" end
      if (@lettera.partner.mail != nil): tel_fax_mail += "\nmail: #{@lettera.partner.mail}" end
      r.add_field "TEL_FAX_MAIL", tel_fax_mail
      contatto = ""
      if (@lettera.contatto != nil)
        contatto = "\nc.a. #{@lettera.contatto.name}"
      end
        r.add_field "CONTATTO", contatto
      ##corpo documento
      r.add_field "OGGETTO", @lettera.oggetto
      r.add_field "CORPO_DOCUMENTO", @lettera.corpo_documento
      ##chiusura do documento
      r.add_field "CHIUSURA_DOCUMENTO", @lettera.chiusura_documento
      r.add_field "USER_FULLNAME", @lettera.user.fullname
    end
    report_file_name = report.generate("tmp/lettera.odt")
    send_file(report_file_name)
  end
end
